home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (C) 1986-2001 by Digital Mars. $Revision: 1.1.1.1 $ */
- #if __SC__ || __RCC__
- #pragma once
- #endif
-
-
- #ifndef __SCNHDR_H
- #define __SCNHDR_H 1
-
- /* Used when dealing with COFF files. */
-
- #if __cplusplus
- extern "C" {
- #endif
-
- struct scnhdr
- {
- char s_name[8]; /* Section name, (.text, .data, .bss). */
- long s_paddr; /* Physical address. */
- long s_vaddr; /* Virtual address. */
- long s_size; /* Section size. */
- long s_scnptr; /* File ptr to raw data for section. */
- long s_relptr; /* File ptr to relocation. */
- long s_lnnoptr; /* File ptr to line numbers. */
- unsigned short s_nreloc; /* Number of relocation entries. */
- unsigned short s_nlnno; /* Number of line number entries. */
- long s_flags; /* Type and content. */
- };
-
- #define SCNHDR struct scnhdr
- #define SCNHSZ sizeof(SCNHDR)
-
- /* Constants for names of special sections. */
- #define _BSS ".bss"
- #define _DATA ".data"
- #define _FINI ".fini"
- #define _INIT ".init"
- #define _TEXT ".text"
- #define _TV ".tv"
- #define _COMM ".comment"
-
- /* Section numbers for main sections */
- #define COFF_TEXT 1
- #define COFF_DATA 2
- #define COFF_BSS 3
- #define COFF_COMMENT 4
- #define COFF_STIDATA 5 /* For static constructor function pointers */
- #define COFF_STDDATA 6 /* For static destructors function pointers */
- #define COFF_MAX_SCNS 6 /* Total number of possible sections */
-
- /* s_flags -- The lower 2 bytes are the section type, upper 2 bytes are
- section handling. */
- #define STYP_REG 0x00 /* regular section: allocated, relocated, */
- /* loaded */
- #define STYP_DSECT 0x01 /* dummy section: not allocated, relocated, */
- /* not loaded */
- #define STYP_NOLOAD 0x02 /* noload section: allocated, relocated, */
- /* not loaded */
- #define STYP_GROUP 0x04 /* grouped section: formed of input sections */
- #define STYP_PAD 0x08 /* padding section: not allocated, not */
- /* relocated, loaded */
- #define STYP_COPY 0x10 /* copy section: for decision function used */
- /* by field update; not allocated, not */
- /* relocated, loaded; reloc & lineno entries */
- /* processed normally */
- #define STYP_TEXT 0x20 /* text only */
- #define STYP_DATA 0x40 /* data only */
- #define STYP_BSS 0x80 /* bss only */
- #define STYP_INFO 0x200 /* comment section : not allocated not */
- /* relocated, not loaded */
- #define STYP_LIB 0x800 /* for .lib section : same as INFO */
- #define STYP_OVER 0x400 /* overlay section : relocated not allocated */
- /* or loaded */
-
- #if __cplusplus
- }
- #endif
-
- #endif
-